home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / text / html / ObjectView.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  2.9 KB  |  98 lines

  1. package javax.swing.text.html;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Component;
  5. import java.beans.BeanInfo;
  6. import java.beans.IntrospectionException;
  7. import java.beans.Introspector;
  8. import java.beans.PropertyDescriptor;
  9. import java.lang.reflect.Method;
  10. import javax.swing.JLabel;
  11. import javax.swing.text.AttributeSet;
  12. import javax.swing.text.ComponentView;
  13. import javax.swing.text.Element;
  14. import javax.swing.text.View;
  15. import javax.swing.text.html.HTML.Attribute;
  16.  
  17. public class ObjectView extends ComponentView {
  18.    public ObjectView(Element var1) {
  19.       super(var1);
  20.    }
  21.  
  22.    protected Component createComponent() {
  23.       AttributeSet var1 = ((View)this).getElement().getAttributes();
  24.       String var2 = (String)var1.getAttribute(Attribute.CLASSID);
  25.  
  26.       try {
  27.          Class var3 = this.getClass(var2);
  28.          Object var4 = var3.newInstance();
  29.          if (var4 instanceof Component) {
  30.             Component var5 = (Component)var4;
  31.             this.setParameters(var5, var1);
  32.             return var5;
  33.          }
  34.       } catch (Throwable var6) {
  35.       }
  36.  
  37.       return this.getUnloadableRepresentation();
  38.    }
  39.  
  40.    private Class getClass(String var1) throws ClassNotFoundException {
  41.       Class var3 = ((View)this).getDocument().getClass();
  42.       ClassLoader var4 = var3.getClassLoader();
  43.       Class var2;
  44.       if (var4 != null) {
  45.          var2 = var4.loadClass(var1);
  46.       } else {
  47.          var2 = Class.forName(var1);
  48.       }
  49.  
  50.       return var2;
  51.    }
  52.  
  53.    Component getUnloadableRepresentation() {
  54.       JLabel var1 = new JLabel("??");
  55.       ((Component)var1).setForeground(Color.red);
  56.       return var1;
  57.    }
  58.  
  59.    private void setParameters(Component var1, AttributeSet var2) {
  60.       Class var3 = var1.getClass();
  61.  
  62.       BeanInfo var4;
  63.       try {
  64.          var4 = Introspector.getBeanInfo(var3);
  65.       } catch (IntrospectionException var13) {
  66.          System.err.println("introspector failed, ex: " + var13);
  67.          return;
  68.       }
  69.  
  70.       PropertyDescriptor[] var5 = var4.getPropertyDescriptors();
  71.  
  72.       for(int var6 = 0; var6 < var5.length; ++var6) {
  73.          Object var7 = var2.getAttribute(var5[var6].getName());
  74.          if (var7 instanceof String) {
  75.             String var8 = (String)var7;
  76.             Method var9 = var5[var6].getWriteMethod();
  77.             if (var9 == null) {
  78.                return;
  79.             }
  80.  
  81.             Class[] var10 = var9.getParameterTypes();
  82.             if (var10.length != 1) {
  83.                return;
  84.             }
  85.  
  86.             String[] var11 = new String[]{var8};
  87.  
  88.             try {
  89.                var9.invoke(var1, var11);
  90.             } catch (Exception var12) {
  91.                System.err.println("Invocation failed");
  92.             }
  93.          }
  94.       }
  95.  
  96.    }
  97. }
  98.